package personnage;

import android.graphics.*;
import java.util.*;

import labyrinthe.Salle;

/**
*  Interface Personnage.
* 
* Signature des méthodes que devront posséder tout type de personnages.
* 
* @author IUT
* @version 22-09-2012
*/
public interface Personnage
{
    /**
    * Méthode publique faitSonChoix.<br />
    *
    * Permet de vérifier que la salle choisie par le Personnage est acessible.
    * 
    * @param sallesAccessibles 
    *           Collection contenant l'ensemble des salles accessibles par le personnage.
    * @return Salle
    *           la salle choisie si elle est accessible sinon la salle actuelle.
    */
    public Salle faitSonChoix(Collection<Salle> sallesAccessibles);


    /**
    * Méthode publique getPosition.<br />
    *
    * Renvoi la position courante du personnage.
    *
    * @return Salle
    *           la salle dans laquelle se trouve le personnage.
    */
    public Salle getPosition();
    
    
    /**
    * Méthode publique setPosition.<br />
    *
    * Permet de modifier la position courante du personnage.
    *
    * @param s 
    *           La salle dans laquelle le personnage sera placé.
    */
    public void setPosition( Salle s);   


	/**
	 * Méthode publique setDeplacementPossible.<br />
	 *
	 * Permet d'indiquer si le personnage peut se deplacer ou non.
	 *
	 * @param psd 
	 *           le booleen permettant de valider ou non le deplacement
	 */
	public void setDeplacementPossible(boolean psd);
	
	/**
	 * Permet de dessiner le personnage sur le jeu
	 * @param g
	 * 			  Objet Graphics sur lequel on va dessiner
	 * @param x
	 *   		  Position x sur la fenetre
	 * @param y
	 * 			  Position y sur la fenetre
	 */
	public void paint(Canvas c, int x, int y);
}
